/********************************************
 *      排序
 * Created by zlj on 2024/6/29.
********************************************/

#ifndef DATA_STRUCTURE_SORT_H
#define DATA_STRUCTURE_SORT_H

#include "common.h"

#define ElemType int

/**
 * 选择排序
 *选择排序（Selection sort）是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小（或最大）的一个元素，存放在序列的起始位置，直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法
 * @param arr 数组
 * @param len 数组长度
 * @param sort_type  1 升序 0 降序
 */
void SelectSort(ElemType arr[], int len, int sort_type);

/**
 * 冒泡排序
 * @param arr
 * @param len
 * @param sort_type
 */
void BulletSort(ElemType arr[], int len, int sort_type);

/**
 * 插入排序
 * @param arr
 * @param len
 * @param sort_type
 */
void InsertSort(ElemType arr[], int len, int sort_type);

/**
 * 快速排序
 * @param arr
 * @param len
 * @param sort_type
 */
void QuickSort(ElemType *arr, int left, int right, int sort_type);

/**
 * 希尔排序
 * @param arr
 * @param len
 */
void ShellSort(ElemType *arr, int len);

/**
 * 基数排序
 * @param arr
 * @param len
 */
void RadixSort(ElemType *arr, int len);

/**
 * 归并排序
 * @param arr
 * @param left
 * @param mid
 * @param right
 */
void MergeSort(ElemType arr[], int len);

void HashSort(int *arr);


#endif //DATA_STRUCTURE_SORT_H
